/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Interfaz;


import DATABASE.ArchivoArbol;
import Negocio.*;
import java.awt.Dialog;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.Serializable;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
import oracle.net.aso.f;
import oracle.net.aso.i;

/**
 *
 * @author Usuario
 */
public class Principal extends javax.swing.JFrame implements Serializable {

    /**
     * Creates new form Interfaz
     */
    int banServ=0;
    DefaultTreeModel modeloArbol = null;
    int incremento = 0;
    int numRecibidos=0;
    Mail mail;
    String fecha;
    ArrayList recibidos;
    ArrayList enviados;
    ArrayList borradores;
    ArrayList etiquetados;
    ArrayList eliminados;
    ArrayList resultados;
    ArrayList nodeseados;
    ArrayList<MailRecibido> seleccionados = new ArrayList();
    boolean borrador = false;
    public String Path = null;
    DefaultTreeModel modelo = null;
    ListaCarpetas carpetas = new ListaCarpetas();

    public Principal() {

        //   
        try 
        {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
        } 
        catch (Exception e) 
        {
            
        }
        initComponents();
        this.panelFiltros.setBorder(javax.swing.BorderFactory.createTitledBorder("Filtros"));
        this.setLocationRelativeTo(null);
       
        Calendar Cal = Calendar.getInstance();
        fecha = Cal.get(Cal.DATE) + "/" + (Cal.get(Cal.MONTH) + 1) + "/" + Cal.get(Cal.YEAR) + " " + Cal.get(Cal.HOUR_OF_DAY) + ":" + Cal.get(Cal.MINUTE) + ":" + Cal.get(Cal.SECOND);
        lblFecha.setText(fecha);
        ListarEnviados();
        ListarSpam();
        ListarBorradores();
        ListarEliminados();
        
        try {
            ListarEtiquetados();
             cargarCarpetas();
             actualizarRecibidos();
             
        } catch (SQLException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }
        try {
            cargar();
            
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }
        try {
            mostrarValoresMensajes();
        } catch (SQLException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }
        this.cmdSalirApp.setBorder(null);
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        NuevoMensaje = new javax.swing.JDialog();
        jLabel2 = new javax.swing.JLabel();
        jLabel1 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        txtDestinatario = new javax.swing.JTextField();
        txtAsunto = new javax.swing.JTextField();
        jScrollPane2 = new javax.swing.JScrollPane();
        txtMensaje = new javax.swing.JTextArea();
        jLabel4 = new javax.swing.JLabel();
        cmdBorrar = new javax.swing.JButton();
        cmdEnviar = new javax.swing.JButton();
        cmdSalir = new javax.swing.JButton();
        jLabel5 = new javax.swing.JLabel();
        lblFecha = new javax.swing.JLabel();
        cmdGuardar = new javax.swing.JButton();
        DefinirFiltros = new javax.swing.JDialog();
        NuevaCarpeta = new javax.swing.JDialog();
        menuArchivos = new javax.swing.JPopupMenu();
        Nuevo = new javax.swing.JMenuItem();
        Borrar = new javax.swing.JMenuItem();
        Etiqueta = new javax.swing.JDialog();
        chkImportante = new javax.swing.JCheckBox();
        chkUrgente = new javax.swing.JCheckBox();
        jLabel7 = new javax.swing.JLabel();
        cmdAplicar = new javax.swing.JButton();
        cmdCancelar = new javax.swing.JButton();
        jLabel8 = new javax.swing.JLabel();
        jLabel9 = new javax.swing.JLabel();
        jLabel10 = new javax.swing.JLabel();
        chkFavoritos = new javax.swing.JCheckBox();
        Configuraciones = new javax.swing.JDialog();
        jLabel6 = new javax.swing.JLabel();
        jLabel11 = new javax.swing.JLabel();
        cmbServidores = new javax.swing.JComboBox();
        cmdGuardarConfiguraciones = new javax.swing.JButton();
        fileSave = new javax.swing.JFileChooser();
        menuAcciones = new javax.swing.JPopupMenu();
        EliminarButton = new javax.swing.JMenuItem();
        MoverButton = new javax.swing.JMenuItem();
        AppEtiquetaButton = new javax.swing.JMenuItem();
        NodeseadoButton = new javax.swing.JMenuItem();
        menuDeshacerBorrar = new javax.swing.JPopupMenu();
        RehacerelimButton = new javax.swing.JMenuItem();
        menuDeshacerEtiqueta = new javax.swing.JPopupMenu();
        DeshacerEtiqButton = new javax.swing.JMenuItem();
        moverA = new javax.swing.JDialog();
        jLabel12 = new javax.swing.JLabel();
        cmbcarpetas = new javax.swing.JComboBox();
        cmdMoverMail = new javax.swing.JButton();
        cmdCancelarM = new javax.swing.JButton();
        MenuCarpeta = new javax.swing.JPopupMenu();
        Eliminar = new javax.swing.JMenuItem();
        moverRecibidos = new javax.swing.JMenuItem();
        ExportarCarpetas = new javax.swing.JDialog();
        cmbcarpetasExportar = new javax.swing.JComboBox();
        jLabel13 = new javax.swing.JLabel();
        cmdExportarCarpeta = new javax.swing.JButton();
        cmdCancelarM1 = new javax.swing.JButton();
        panelMensajes = new javax.swing.JTabbedPane();
        panelRecibidos = new javax.swing.JPanel();
        jScrollPane4 = new javax.swing.JScrollPane();
        tablaRecibidos = new javax.swing.JTable();
        cdmEtiquetar = new javax.swing.JButton();
        cmdExportarRecibidos = new javax.swing.JButton();
        cmdLeerMail = new javax.swing.JButton();
        cmdActualizar = new javax.swing.JButton();
        panelEnviados = new javax.swing.JPanel();
        jScrollPane5 = new javax.swing.JScrollPane();
        tablaEnviados = new javax.swing.JTable();
        cmdExportarEnviados = new javax.swing.JButton();
        panelBorradores = new javax.swing.JPanel();
        jScrollPane7 = new javax.swing.JScrollPane();
        tablaBorradores = new javax.swing.JTable();
        panelEtiquetados = new javax.swing.JPanel();
        jScrollPane6 = new javax.swing.JScrollPane();
        tablaEtiquetados = new javax.swing.JTable();
        panelEliminados = new javax.swing.JPanel();
        jScrollPane8 = new javax.swing.JScrollPane();
        tablaEliminados = new javax.swing.JTable();
        PanelResultados = new javax.swing.JPanel();
        jScrollPane9 = new javax.swing.JScrollPane();
        tablaResultados = new javax.swing.JTable();
        jPanel1 = new javax.swing.JPanel();
        jScrollPane11 = new javax.swing.JScrollPane();
        tablaMailCarpetas = new javax.swing.JTable();
        jScrollPane12 = new javax.swing.JScrollPane();
        tablaNodeseados = new javax.swing.JTable();
        lblLogo1 = new javax.swing.JLabel();
        panelEscritura = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        listaOpciones = new javax.swing.JList();
        jScrollPane10 = new javax.swing.JScrollPane();
        Tree1 = new javax.swing.JTree();
        cmdAgregarCarpeta = new javax.swing.JButton();
        cmdEliminarCarpeta = new javax.swing.JButton();
        cmdSalirApp = new javax.swing.JButton();
        cmdExportarC = new javax.swing.JButton();
        panelFiltros = new javax.swing.JPanel();
        btnBuscarMails = new javax.swing.JButton();
        txtfiltro = new javax.swing.JTextField();
        comboFiltros = new javax.swing.JComboBox();
        cmdConfiguraciones = new javax.swing.JButton();

        NuevoMensaje.setTitle("Escribir un Nuevo Mensaje");

        jLabel2.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
        jLabel2.setText("HOLA... Cliente@ejemplo.com");

        jLabel1.setText("Destinatario:");

        jLabel3.setText("Asunto:");

        txtMensaje.setColumns(20);
        txtMensaje.setRows(5);
        jScrollPane2.setViewportView(txtMensaje);

        jLabel4.setText("Escriba el mail aquí:");

        cmdBorrar.setText("Borrar...");
        cmdBorrar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdBorrarActionPerformed(evt);
            }
        });

        cmdEnviar.setText("Enviar...");
        cmdEnviar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdEnviarActionPerformed(evt);
            }
        });

        cmdSalir.setText("Salir...");
        cmdSalir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdSalirActionPerformed(evt);
            }
        });

        jLabel5.setText("Fecha:");

        lblFecha.setText("jLabel6");

        cmdGuardar.setText("Guardar...");
        cmdGuardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdGuardarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout NuevoMensajeLayout = new javax.swing.GroupLayout(NuevoMensaje.getContentPane());
        NuevoMensaje.getContentPane().setLayout(NuevoMensajeLayout);
        NuevoMensajeLayout.setHorizontalGroup(
            NuevoMensajeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(NuevoMensajeLayout.createSequentialGroup()
                .addGap(35, 35, 35)
                .addGroup(NuevoMensajeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(NuevoMensajeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                        .addGroup(NuevoMensajeLayout.createSequentialGroup()
                            .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 254, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGap(94, 94, 94)
                            .addComponent(jLabel5)
                            .addGap(29, 29, 29)
                            .addComponent(lblFecha, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addGap(71, 71, 71))
                        .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 636, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jLabel4))
                    .addGroup(NuevoMensajeLayout.createSequentialGroup()
                        .addGroup(NuevoMensajeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addGap(18, 18, 18)
                        .addGroup(NuevoMensajeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(txtDestinatario)
                            .addComponent(txtAsunto, javax.swing.GroupLayout.DEFAULT_SIZE, 373, Short.MAX_VALUE))))
                .addContainerGap(33, Short.MAX_VALUE))
            .addGroup(NuevoMensajeLayout.createSequentialGroup()
                .addGap(105, 105, 105)
                .addComponent(cmdEnviar, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(cmdGuardar, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(37, 37, 37)
                .addComponent(cmdBorrar, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(34, 34, 34)
                .addComponent(cmdSalir, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(106, 106, 106))
        );
        NuevoMensajeLayout.setVerticalGroup(
            NuevoMensajeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(NuevoMensajeLayout.createSequentialGroup()
                .addGap(6, 6, 6)
                .addGroup(NuevoMensajeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel5)
                    .addComponent(lblFecha))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(NuevoMensajeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(txtDestinatario, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(NuevoMensajeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel3)
                    .addComponent(txtAsunto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(28, 28, 28)
                .addComponent(jLabel4)
                .addGap(18, 18, 18)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 212, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addGroup(NuevoMensajeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(cmdBorrar, javax.swing.GroupLayout.DEFAULT_SIZE, 44, Short.MAX_VALUE)
                    .addComponent(cmdEnviar, javax.swing.GroupLayout.DEFAULT_SIZE, 44, Short.MAX_VALUE)
                    .addComponent(cmdSalir, javax.swing.GroupLayout.DEFAULT_SIZE, 44, Short.MAX_VALUE)
                    .addComponent(cmdGuardar, javax.swing.GroupLayout.DEFAULT_SIZE, 44, Short.MAX_VALUE))
                .addGap(24, 24, 24))
        );

        DefinirFiltros.setTitle("Definir Filtros");

        javax.swing.GroupLayout DefinirFiltrosLayout = new javax.swing.GroupLayout(DefinirFiltros.getContentPane());
        DefinirFiltros.getContentPane().setLayout(DefinirFiltrosLayout);
        DefinirFiltrosLayout.setHorizontalGroup(
            DefinirFiltrosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        DefinirFiltrosLayout.setVerticalGroup(
            DefinirFiltrosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
        );

        javax.swing.GroupLayout NuevaCarpetaLayout = new javax.swing.GroupLayout(NuevaCarpeta.getContentPane());
        NuevaCarpeta.getContentPane().setLayout(NuevaCarpetaLayout);
        NuevaCarpetaLayout.setHorizontalGroup(
            NuevaCarpetaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        NuevaCarpetaLayout.setVerticalGroup(
            NuevaCarpetaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
        );

        Nuevo.setText("jMenuItem1");
        menuArchivos.add(Nuevo);

        Borrar.setText("jMenuItem1");
        menuArchivos.add(Borrar);

        chkImportante.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N

        chkUrgente.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N

        jLabel7.setBackground(new java.awt.Color(255, 0, 0));
        jLabel7.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N
        jLabel7.setForeground(new java.awt.Color(255, 0, 0));
        jLabel7.setText("Urgente");

        cmdAplicar.setText("Aplicar");
        cmdAplicar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdAplicarActionPerformed(evt);
            }
        });

        cmdCancelar.setText("Cancelar");
        cmdCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdCancelarActionPerformed(evt);
            }
        });

        jLabel8.setFont(new java.awt.Font("Times New Roman", 1, 24)); // NOI18N
        jLabel8.setText("Elija la etiqueta que desea aplicar:");

        jLabel9.setBackground(new java.awt.Color(51, 51, 255));
        jLabel9.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N
        jLabel9.setForeground(new java.awt.Color(0, 51, 255));
        jLabel9.setText("Favoritos");

        jLabel10.setBackground(new java.awt.Color(0, 204, 0));
        jLabel10.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N
        jLabel10.setForeground(new java.awt.Color(0, 153, 0));
        jLabel10.setText("Importante");

        chkFavoritos.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N

        javax.swing.GroupLayout EtiquetaLayout = new javax.swing.GroupLayout(Etiqueta.getContentPane());
        Etiqueta.getContentPane().setLayout(EtiquetaLayout);
        EtiquetaLayout.setHorizontalGroup(
            EtiquetaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(EtiquetaLayout.createSequentialGroup()
                .addGroup(EtiquetaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(EtiquetaLayout.createSequentialGroup()
                        .addGap(131, 131, 131)
                        .addGroup(EtiquetaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(chkUrgente)
                            .addComponent(chkFavoritos)
                            .addComponent(chkImportante))
                        .addGap(18, 18, 18)
                        .addGroup(EtiquetaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel10)
                            .addComponent(jLabel7)
                            .addComponent(jLabel9)))
                    .addGroup(EtiquetaLayout.createSequentialGroup()
                        .addGap(51, 51, 51)
                        .addComponent(cmdAplicar, javax.swing.GroupLayout.PREFERRED_SIZE, 124, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(44, 44, 44)
                        .addComponent(cmdCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(EtiquetaLayout.createSequentialGroup()
                        .addGap(27, 27, 27)
                        .addComponent(jLabel8)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        EtiquetaLayout.setVerticalGroup(
            EtiquetaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(EtiquetaLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel8)
                .addGap(56, 56, 56)
                .addGroup(EtiquetaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(chkUrgente)
                    .addComponent(jLabel7, javax.swing.GroupLayout.Alignment.TRAILING))
                .addGap(18, 18, 18)
                .addGroup(EtiquetaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jLabel10)
                    .addComponent(chkImportante))
                .addGap(18, 18, 18)
                .addGroup(EtiquetaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(chkFavoritos)
                    .addComponent(jLabel9))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 55, Short.MAX_VALUE)
                .addGroup(EtiquetaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(cmdAplicar)
                    .addComponent(cmdCancelar))
                .addGap(42, 42, 42))
        );

        Configuraciones.getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jLabel6.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
        jLabel6.setText("CONFIGURACION DE SERVIDOR");
        Configuraciones.getContentPane().add(jLabel6, new org.netbeans.lib.awtextra.AbsoluteConstraints(90, 30, -1, -1));

        jLabel11.setText("-Servidor:");
        Configuraciones.getContentPane().add(jLabel11, new org.netbeans.lib.awtextra.AbsoluteConstraints(110, 90, -1, -1));

        cmbServidores.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "SendMail", "Postfix" }));
        Configuraciones.getContentPane().add(cmbServidores, new org.netbeans.lib.awtextra.AbsoluteConstraints(210, 90, 149, -1));

        cmdGuardarConfiguraciones.setText("Guardar...");
        cmdGuardarConfiguraciones.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdGuardarConfiguracionesActionPerformed(evt);
            }
        });
        Configuraciones.getContentPane().add(cmdGuardarConfiguraciones, new org.netbeans.lib.awtextra.AbsoluteConstraints(180, 160, -1, -1));

        fileSave.setDialogType(javax.swing.JFileChooser.SAVE_DIALOG);
        fileSave.setDialogTitle("Guardar como");

        EliminarButton.setText("Eliminar");
        EliminarButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                EliminarButtonActionPerformed(evt);
            }
        });
        menuAcciones.add(EliminarButton);

        MoverButton.setText("Mover a Carpeta:");
        MoverButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                MoverButtonActionPerformed(evt);
            }
        });
        menuAcciones.add(MoverButton);

        AppEtiquetaButton.setText("Aplicar Etiqueta");
        AppEtiquetaButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                AppEtiquetaButtonActionPerformed(evt);
            }
        });
        menuAcciones.add(AppEtiquetaButton);

        NodeseadoButton.setText("Correo no Deseado");
        NodeseadoButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                NodeseadoButtonActionPerformed(evt);
            }
        });
        menuAcciones.add(NodeseadoButton);

        RehacerelimButton.setText("Rehacer Mail Eliminado");
        RehacerelimButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                RehacerelimButtonActionPerformed(evt);
            }
        });
        menuDeshacerBorrar.add(RehacerelimButton);

        DeshacerEtiqButton.setText("Deshacer Etiqueta");
        DeshacerEtiqButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                DeshacerEtiqButtonActionPerformed(evt);
            }
        });
        menuDeshacerEtiqueta.add(DeshacerEtiqButton);

        jLabel12.setText("Mover a...");

        cmbcarpetas.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Elija una carpeta" }));

        cmdMoverMail.setText("Aceptar");
        cmdMoverMail.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdMoverMailActionPerformed(evt);
            }
        });

        cmdCancelarM.setText("Cancelar");
        cmdCancelarM.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdCancelarMActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout moverALayout = new javax.swing.GroupLayout(moverA.getContentPane());
        moverA.getContentPane().setLayout(moverALayout);
        moverALayout.setHorizontalGroup(
            moverALayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(moverALayout.createSequentialGroup()
                .addGroup(moverALayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(moverALayout.createSequentialGroup()
                        .addGap(30, 30, 30)
                        .addComponent(jLabel12)
                        .addGap(33, 33, 33)
                        .addComponent(cmbcarpetas, javax.swing.GroupLayout.PREFERRED_SIZE, 152, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(moverALayout.createSequentialGroup()
                        .addGap(63, 63, 63)
                        .addComponent(cmdMoverMail)
                        .addGap(47, 47, 47)
                        .addComponent(cmdCancelarM)))
                .addContainerGap(134, Short.MAX_VALUE))
        );
        moverALayout.setVerticalGroup(
            moverALayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(moverALayout.createSequentialGroup()
                .addGap(39, 39, 39)
                .addGroup(moverALayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel12)
                    .addComponent(cmbcarpetas, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(26, 26, 26)
                .addGroup(moverALayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(cmdMoverMail)
                    .addComponent(cmdCancelarM))
                .addContainerGap(192, Short.MAX_VALUE))
        );

        Eliminar.setText("Eliminar");
        Eliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                EliminarActionPerformed(evt);
            }
        });
        MenuCarpeta.add(Eliminar);

        moverRecibidos.setText("Mover a Bandeja de Entrada");
        moverRecibidos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                moverRecibidosActionPerformed(evt);
            }
        });
        MenuCarpeta.add(moverRecibidos);

        cmbcarpetasExportar.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Elija una carpeta" }));

        jLabel13.setText("Exportar");

        cmdExportarCarpeta.setText("Aceptar");
        cmdExportarCarpeta.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdExportarCarpetaActionPerformed(evt);
            }
        });

        cmdCancelarM1.setText("Cancelar");
        cmdCancelarM1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdCancelarM1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout ExportarCarpetasLayout = new javax.swing.GroupLayout(ExportarCarpetas.getContentPane());
        ExportarCarpetas.getContentPane().setLayout(ExportarCarpetasLayout);
        ExportarCarpetasLayout.setHorizontalGroup(
            ExportarCarpetasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(ExportarCarpetasLayout.createSequentialGroup()
                .addGroup(ExportarCarpetasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(ExportarCarpetasLayout.createSequentialGroup()
                        .addGap(30, 30, 30)
                        .addComponent(jLabel13)
                        .addGap(33, 33, 33)
                        .addComponent(cmbcarpetasExportar, javax.swing.GroupLayout.PREFERRED_SIZE, 152, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(ExportarCarpetasLayout.createSequentialGroup()
                        .addGap(63, 63, 63)
                        .addComponent(cmdExportarCarpeta)
                        .addGap(47, 47, 47)
                        .addComponent(cmdCancelarM1)))
                .addContainerGap(143, Short.MAX_VALUE))
        );
        ExportarCarpetasLayout.setVerticalGroup(
            ExportarCarpetasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(ExportarCarpetasLayout.createSequentialGroup()
                .addGap(39, 39, 39)
                .addGroup(ExportarCarpetasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel13)
                    .addComponent(cmbcarpetasExportar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(26, 26, 26)
                .addGroup(ExportarCarpetasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(cmdExportarCarpeta)
                    .addComponent(cmdCancelarM1))
                .addContainerGap(192, Short.MAX_VALUE))
        );

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("BeanMail... Su Cliente Inteligente");
        setBackground(new java.awt.Color(255, 255, 255));

        panelMensajes.setComponentPopupMenu(menuDeshacerBorrar);

        tablaRecibidos.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "MARCA", "ID", "REMITENTE", "ASUNTO", "CUERPO", "FECHA", "ESTADO"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Boolean.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class
            };
            boolean[] canEdit = new boolean [] {
                true, false, false, false, false, false, true
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tablaRecibidos.setCellSelectionEnabled(true);
        tablaRecibidos.setComponentPopupMenu(menuAcciones);
        tablaRecibidos.setGridColor(new java.awt.Color(255, 255, 255));
        tablaRecibidos.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                tablaRecibidosMousePressed(evt);
            }
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tablaRecibidosMouseClicked(evt);
            }
        });
        jScrollPane4.setViewportView(tablaRecibidos);
        tablaRecibidos.getColumnModel().getSelectionModel().setSelectionMode(javax.swing.ListSelectionModel.SINGLE_INTERVAL_SELECTION);

        cdmEtiquetar.setText("Etiquetar...");
        cdmEtiquetar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cdmEtiquetarActionPerformed(evt);
            }
        });

        cmdExportarRecibidos.setText("Exportar");
        cmdExportarRecibidos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdExportarRecibidosActionPerformed(evt);
            }
        });

        cmdLeerMail.setText("Leer...");
        cmdLeerMail.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdLeerMailActionPerformed(evt);
            }
        });

        cmdActualizar.setText("Actualizar...");
        cmdActualizar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdActualizarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout panelRecibidosLayout = new javax.swing.GroupLayout(panelRecibidos);
        panelRecibidos.setLayout(panelRecibidosLayout);
        panelRecibidosLayout.setHorizontalGroup(
            panelRecibidosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelRecibidosLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 1003, Short.MAX_VALUE)
                .addContainerGap())
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelRecibidosLayout.createSequentialGroup()
                .addGap(110, 110, 110)
                .addComponent(cmdLeerMail, javax.swing.GroupLayout.PREFERRED_SIZE, 125, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(107, 107, 107)
                .addComponent(cmdExportarRecibidos, javax.swing.GroupLayout.PREFERRED_SIZE, 124, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(cdmEtiquetar, javax.swing.GroupLayout.PREFERRED_SIZE, 133, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(93, 93, 93)
                .addComponent(cmdActualizar, javax.swing.GroupLayout.PREFERRED_SIZE, 142, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(65, 65, 65))
        );
        panelRecibidosLayout.setVerticalGroup(
            panelRecibidosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelRecibidosLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 413, Short.MAX_VALUE)
                .addGap(26, 26, 26)
                .addGroup(panelRecibidosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(cdmEtiquetar)
                    .addComponent(cmdExportarRecibidos)
                    .addComponent(cmdLeerMail)
                    .addComponent(cmdActualizar))
                .addGap(23, 23, 23))
        );

        panelMensajes.addTab("Recibidos()", panelRecibidos);

        tablaEnviados.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "MARCA", "ID", "DESTINATARIO", "ASUNTO", "CUERPO", "FECHA"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Boolean.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class
            };
            boolean[] canEdit = new boolean [] {
                true, false, false, false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tablaEnviados.setGridColor(new java.awt.Color(255, 255, 255));
        jScrollPane5.setViewportView(tablaEnviados);

        cmdExportarEnviados.setText("Exportar");
        cmdExportarEnviados.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdExportarEnviadosActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout panelEnviadosLayout = new javax.swing.GroupLayout(panelEnviados);
        panelEnviados.setLayout(panelEnviadosLayout);
        panelEnviadosLayout.setHorizontalGroup(
            panelEnviadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelEnviadosLayout.createSequentialGroup()
                .addGroup(panelEnviadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(panelEnviadosLayout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jScrollPane5, javax.swing.GroupLayout.DEFAULT_SIZE, 1003, Short.MAX_VALUE))
                    .addGroup(panelEnviadosLayout.createSequentialGroup()
                        .addGap(451, 451, 451)
                        .addComponent(cmdExportarEnviados, javax.swing.GroupLayout.PREFERRED_SIZE, 114, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(0, 0, Short.MAX_VALUE)))
                .addContainerGap())
        );
        panelEnviadosLayout.setVerticalGroup(
            panelEnviadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelEnviadosLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, 410, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(26, 26, 26)
                .addComponent(cmdExportarEnviados)
                .addContainerGap(26, Short.MAX_VALUE))
        );

        panelMensajes.addTab("Enviados", panelEnviados);

        tablaBorradores.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "ID", "DESTINATARIO", "ASUNTO", "CUERPO", "FECHA"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tablaBorradores.setGridColor(new java.awt.Color(255, 255, 255));
        tablaBorradores.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tablaBorradoresMouseClicked(evt);
            }
        });
        jScrollPane7.setViewportView(tablaBorradores);

        javax.swing.GroupLayout panelBorradoresLayout = new javax.swing.GroupLayout(panelBorradores);
        panelBorradores.setLayout(panelBorradoresLayout);
        panelBorradoresLayout.setHorizontalGroup(
            panelBorradoresLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelBorradoresLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane7, javax.swing.GroupLayout.DEFAULT_SIZE, 1003, Short.MAX_VALUE)
                .addContainerGap())
        );
        panelBorradoresLayout.setVerticalGroup(
            panelBorradoresLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelBorradoresLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane7, javax.swing.GroupLayout.DEFAULT_SIZE, 474, Short.MAX_VALUE)
                .addContainerGap())
        );

        panelMensajes.addTab("Borradores", panelBorradores);

        tablaEtiquetados.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Marca", "ID Remitente", "Remitente", "Asunto", "Fecha", "ID ETIQUETA"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Boolean.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }
        });
        tablaEtiquetados.setComponentPopupMenu(menuDeshacerEtiqueta);
        jScrollPane6.setViewportView(tablaEtiquetados);

        javax.swing.GroupLayout panelEtiquetadosLayout = new javax.swing.GroupLayout(panelEtiquetados);
        panelEtiquetados.setLayout(panelEtiquetadosLayout);
        panelEtiquetadosLayout.setHorizontalGroup(
            panelEtiquetadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelEtiquetadosLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane6, javax.swing.GroupLayout.DEFAULT_SIZE, 1003, Short.MAX_VALUE)
                .addContainerGap())
        );
        panelEtiquetadosLayout.setVerticalGroup(
            panelEtiquetadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelEtiquetadosLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane6, javax.swing.GroupLayout.DEFAULT_SIZE, 474, Short.MAX_VALUE)
                .addContainerGap())
        );

        panelMensajes.addTab("Etiquetados", panelEtiquetados);

        tablaEliminados.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "MARCA", "ID", "REMITENTE", "ASUNTO", "CUERPO", "FECHA"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Boolean.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class
            };
            boolean[] canEdit = new boolean [] {
                true, false, false, false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tablaEliminados.setComponentPopupMenu(menuDeshacerBorrar);
        tablaEliminados.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        tablaEliminados.setGridColor(new java.awt.Color(255, 255, 255));
        tablaEliminados.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tablaEliminadosMouseClicked(evt);
            }
        });
        jScrollPane8.setViewportView(tablaEliminados);

        javax.swing.GroupLayout panelEliminadosLayout = new javax.swing.GroupLayout(panelEliminados);
        panelEliminados.setLayout(panelEliminadosLayout);
        panelEliminadosLayout.setHorizontalGroup(
            panelEliminadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelEliminadosLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane8, javax.swing.GroupLayout.DEFAULT_SIZE, 1003, Short.MAX_VALUE)
                .addContainerGap())
        );
        panelEliminadosLayout.setVerticalGroup(
            panelEliminadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelEliminadosLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane8, javax.swing.GroupLayout.DEFAULT_SIZE, 474, Short.MAX_VALUE)
                .addContainerGap())
        );

        panelMensajes.addTab("Eliminados", panelEliminados);

        tablaResultados.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "MARCA", "ID", "REMITENTE", "ASUNTO", "CUERPO", "FECHA"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Boolean.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class
            };
            boolean[] canEdit = new boolean [] {
                true, false, false, false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tablaResultados.setCellSelectionEnabled(true);
        tablaResultados.setComponentPopupMenu(menuAcciones);
        tablaResultados.setGridColor(new java.awt.Color(255, 255, 255));
        jScrollPane9.setViewportView(tablaResultados);
        tablaResultados.getColumnModel().getSelectionModel().setSelectionMode(javax.swing.ListSelectionModel.SINGLE_INTERVAL_SELECTION);

        javax.swing.GroupLayout PanelResultadosLayout = new javax.swing.GroupLayout(PanelResultados);
        PanelResultados.setLayout(PanelResultadosLayout);
        PanelResultadosLayout.setHorizontalGroup(
            PanelResultadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 1023, Short.MAX_VALUE)
            .addGroup(PanelResultadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(PanelResultadosLayout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jScrollPane9, javax.swing.GroupLayout.DEFAULT_SIZE, 1003, Short.MAX_VALUE)
                    .addContainerGap()))
        );
        PanelResultadosLayout.setVerticalGroup(
            PanelResultadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 496, Short.MAX_VALUE)
            .addGroup(PanelResultadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(PanelResultadosLayout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jScrollPane9, javax.swing.GroupLayout.DEFAULT_SIZE, 474, Short.MAX_VALUE)
                    .addContainerGap()))
        );

        panelMensajes.addTab("Resultados de Busqueda", PanelResultados);

        tablaMailCarpetas.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "MARCA", "ID", "REMITENTE", "ASUNTO", "CUERPO", "FECHA"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Boolean.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class
            };
            boolean[] canEdit = new boolean [] {
                true, false, true, false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tablaMailCarpetas.setCellSelectionEnabled(true);
        tablaMailCarpetas.setComponentPopupMenu(MenuCarpeta);
        tablaMailCarpetas.setGridColor(new java.awt.Color(255, 255, 255));
        jScrollPane11.setViewportView(tablaMailCarpetas);
        tablaMailCarpetas.getColumnModel().getSelectionModel().setSelectionMode(javax.swing.ListSelectionModel.SINGLE_INTERVAL_SELECTION);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane11, javax.swing.GroupLayout.DEFAULT_SIZE, 1003, Short.MAX_VALUE)
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane11, javax.swing.GroupLayout.DEFAULT_SIZE, 474, Short.MAX_VALUE)
                .addContainerGap())
        );

        panelMensajes.addTab("Carpetas", jPanel1);

        tablaNodeseados.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "MARCA", "ID", "REMITENTE", "ASUNTO", "CUERPO", "FECHA"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Boolean.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class
            };
            boolean[] canEdit = new boolean [] {
                true, false, true, false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tablaNodeseados.setCellSelectionEnabled(true);
        tablaNodeseados.setGridColor(new java.awt.Color(255, 255, 255));
        jScrollPane12.setViewportView(tablaNodeseados);
        tablaNodeseados.getColumnModel().getSelectionModel().setSelectionMode(javax.swing.ListSelectionModel.SINGLE_INTERVAL_SELECTION);

        panelMensajes.addTab("No deseados", jScrollPane12);

        lblLogo1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/logo.png"))); // NOI18N

        listaOpciones.setModel(new javax.swing.AbstractListModel() {
            String[] strings = { "Nuevo Mensaje", "Configuraciones" };
            public int getSize() { return strings.length; }
            public Object getElementAt(int i) { return strings[i]; }
        });
        listaOpciones.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        listaOpciones.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                listaOpcionesMouseClicked(evt);
            }
        });
        listaOpciones.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                listaOpcionesKeyPressed(evt);
            }
        });
        jScrollPane1.setViewportView(listaOpciones);

        javax.swing.GroupLayout panelEscrituraLayout = new javax.swing.GroupLayout(panelEscritura);
        panelEscritura.setLayout(panelEscrituraLayout);
        panelEscrituraLayout.setHorizontalGroup(
            panelEscrituraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1)
        );
        panelEscrituraLayout.setVerticalGroup(
            panelEscrituraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
        );

        Tree1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                Tree1MouseClicked(evt);
            }
        });
        jScrollPane10.setViewportView(Tree1);

        cmdAgregarCarpeta.setText("Aregar Carpeta");
        cmdAgregarCarpeta.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdAgregarCarpetaActionPerformed(evt);
            }
        });

        cmdEliminarCarpeta.setText("Eliminar Carpeta");
        cmdEliminarCarpeta.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdEliminarCarpetaActionPerformed(evt);
            }
        });

        cmdSalirApp.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/cerrar.png"))); // NOI18N
        cmdSalirApp.setToolTipText("");
        cmdSalirApp.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdSalirAppActionPerformed(evt);
            }
        });

        cmdExportarC.setText("Exportar Carpeta");
        cmdExportarC.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdExportarCActionPerformed(evt);
            }
        });

        btnBuscarMails.setText("Ir...");
        btnBuscarMails.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnBuscarMailsActionPerformed(evt);
            }
        });

        txtfiltro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txtfiltroActionPerformed(evt);
            }
        });

        comboFiltros.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Seleccione Filtro", "Asunto", "Cuerpo", "Remitente" }));
        comboFiltros.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                comboFiltrosActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout panelFiltrosLayout = new javax.swing.GroupLayout(panelFiltros);
        panelFiltros.setLayout(panelFiltrosLayout);
        panelFiltrosLayout.setHorizontalGroup(
            panelFiltrosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelFiltrosLayout.createSequentialGroup()
                .addGap(38, 38, 38)
                .addComponent(comboFiltros, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 238, Short.MAX_VALUE)
                .addComponent(btnBuscarMails)
                .addGap(30, 30, 30))
            .addGroup(panelFiltrosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(panelFiltrosLayout.createSequentialGroup()
                    .addGap(178, 178, 178)
                    .addComponent(txtfiltro, javax.swing.GroupLayout.PREFERRED_SIZE, 149, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(134, Short.MAX_VALUE)))
        );
        panelFiltrosLayout.setVerticalGroup(
            panelFiltrosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelFiltrosLayout.createSequentialGroup()
                .addGap(37, 37, 37)
                .addGroup(panelFiltrosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(comboFiltros, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(btnBuscarMails))
                .addContainerGap(40, Short.MAX_VALUE))
            .addGroup(panelFiltrosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(panelFiltrosLayout.createSequentialGroup()
                    .addGap(38, 38, 38)
                    .addComponent(txtfiltro, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(42, Short.MAX_VALUE)))
        );

        cmdConfiguraciones.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/config.png"))); // NOI18N
        cmdConfiguraciones.setToolTipText("");
        cmdConfiguraciones.setBorder(javax.swing.BorderFactory.createCompoundBorder());
        cmdConfiguraciones.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdConfiguracionesActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(panelEscritura, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(lblLogo1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jScrollPane10)))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(24, 24, 24)
                        .addComponent(cmdAgregarCarpeta)
                        .addGap(66, 66, 66)
                        .addComponent(cmdEliminarCarpeta))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(101, 101, 101)
                        .addComponent(cmdExportarC, javax.swing.GroupLayout.PREFERRED_SIZE, 131, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 54, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(panelFiltros, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(cmdConfiguraciones, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(cmdSalirApp, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(panelMensajes, javax.swing.GroupLayout.PREFERRED_SIZE, 1028, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(21, 21, 21))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(7, 7, 7)
                        .addComponent(lblLogo1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(panelEscritura, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(37, 37, 37)
                        .addComponent(jScrollPane10, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))
                    .addComponent(panelMensajes))
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(layout.createSequentialGroup()
                            .addGap(39, 39, 39)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                .addComponent(cmdAgregarCarpeta, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(cmdEliminarCarpeta, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                            .addGap(18, 18, 18)
                            .addComponent(cmdExportarC))
                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                            .addGap(24, 24, 24)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(cmdSalirApp, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 82, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(cmdConfiguraciones, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 82, javax.swing.GroupLayout.PREFERRED_SIZE))))
                    .addGroup(layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(panelFiltros, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void listaOpcionesKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_listaOpcionesKeyPressed
    }//GEN-LAST:event_listaOpcionesKeyPressed

    private void listaOpcionesMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_listaOpcionesMouseClicked
        if (listaOpciones.getSelectedIndex() == 0) {

            
            this.cmdEnviar.setEnabled(true);
            this.cmdGuardar.setEnabled(true);
            this.cmdBorrar.setEnabled(true);
            this.txtAsunto.enable(true);
            this.txtDestinatario.enable(true);
            this.txtMensaje.enable(true);
            
            
            this.txtAsunto.setText("");
            this.txtDestinatario.setText("");
            this.txtMensaje.setText("");
            
            
            NuevoMensaje.setSize(710, 500);
            NuevoMensaje.setLocationRelativeTo(this);
            NuevoMensaje.setModal(true);
            NuevoMensaje.setVisible(true);

        }
        if (listaOpciones.getSelectedIndex() == 1) {


            Configuraciones.setSize(500, 250);
            Configuraciones.setLocationRelativeTo(this);
            Configuraciones.setModal(true);
            Configuraciones.setVisible(true);


        }
        if (listaOpciones.getSelectedIndex() == 2) {


            DefinirFiltros.setSize(550, 419);
            DefinirFiltros.setLocationRelativeTo(this);
            DefinirFiltros.setModal(true);
            DefinirFiltros.setVisible(true);


        }


    }//GEN-LAST:event_listaOpcionesMouseClicked

    private void cmdBorrarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdBorrarActionPerformed
        txtDestinatario.setText("");
        txtAsunto.setText("");
        txtMensaje.setText("");

    }//GEN-LAST:event_cmdBorrarActionPerformed

    private class Hilo extends Thread {

        public void run() {
            while (true) {
                try {
                    // actualizar("RECIBIDO",tablaRecibidos);
                    Thread.sleep(1000);
                } catch (InterruptedException ex) {
                    Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
                }
            }

        }
    }

    public void actualizarRecibidos() {
        MailRecibido email = new MailRecibido();
        recibidos = new ArrayList();
        try {
            ListarEtiquetados();
        } catch (SQLException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }
        try {
            int servidor;
            if(this.banServ==0)
            {
                ConexionMails cargar = new ConexionMails();
                servidor=cargar.cargarServidor()-1;
                banServ=1;
            }
            else
            {
                servidor = this.cmbServidores.getSelectedIndex();
                ConexionMails cargar = new ConexionMails();
                if (servidor==0)
                    cargar.cambiarServidor("SendMail");
                if (servidor==1)
                    cargar.cambiarServidor("PostFix");
            }

            switch (servidor) {
                case 0:
                    SendMailConexion conectarSMC = new SendMailConexion();
                    recibidos = conectarSMC.getMail(servidor + 1);
                    
                    break;

                case 1:
                    PostFixConexion conectarPFC = new PostFixConexion();
                    recibidos = conectarPFC.lookupMail(servidor + 1);
                    break;

                default:
                    JOptionPane.showMessageDialog(this, "No ha seleccionado un servidor de entrada");
                    break;
            }
            
            //for (int i=0;i<recibidos.size();i++)
            //{
                this.mostrarValoresMensajes();
               // this.panelRecibidos.setBorder(javax.swing.BorderFactory.createTitledBorder("Joder"));
                //JOptionPane.showMessageDialog(this, numRecibidos);
            //}

            DefaultTableModel temp = (DefaultTableModel) tablaRecibidos.getModel();
            for (int i = tablaRecibidos.getRowCount() - 1; i >= 0; i--) {
                temp.removeRow(i);
            }
            for (int i = 0; i < recibidos.size(); i++) {
                //Cliente otroCliente = new Cliente();
                email = (MailRecibido) recibidos.get(i);
                if(email.getEstado()==0)
                {
                
                    Object nuevo[] = {new Boolean(false), email.getId_mail(), email.getRemitente(), email.getAsunto(), email.getCuerpo(), email.getFecha(),"LEIDO"}; //esto es por las tres columnas aunque puede variar
                    temp.addRow(nuevo);
                }
                else
                {
                    Object nuevo[] = {new Boolean(false), email.getId_mail(), email.getRemitente(), email.getAsunto(), email.getCuerpo(), email.getFecha(),"NO LEIDO"}; //esto es por las tres columnas aunque puede variar
                    temp.addRow(nuevo);
                }
                
                
            }
            tablaRecibidos.setModel(temp);
            //tablaRecibidos.setf
        } catch (SQLException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        //aqui es la cosa!!!!!
       // MailRecibido nuevo = new MailRecibido();
        
        
        ConexionMails conexion = new ConexionMails();
        ArrayList <MailRecibido> listamails = new ArrayList<MailRecibido>();
        //MailRecibido mail = new MailRecibido();
        for (int i=0;i<carpetas.getNumCarpetas();i++)
        {
            try 
            {
                listamails=conexion.cargarMailCarpeta(carpetas.getCarpeta(i));
                carpetas.setListaMails(carpetas.getCarpeta(i),listamails);
                ArrayList<MailRecibido> prueba=carpetas.buscarCarpetaId(i).getMails();
                for(int j=0;j<prueba.size();j++){
                    System.out.println(j+":  "+prueba.get(j).getId_mail());
                }
            } 
            catch (SQLException ex) 
            {
                Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
            }
            //mails=conexion.cargarMailCarpeta();
            
            
            
            
        }
        
        
        
        
    }
    /*
     * SendMailDB recuperar= new SendMailDB(); try { //Para establecer el modelo
     * al JTable DefaultTableModel modelo = new DefaultTableModel();
     * tabla.setModel(modelo); ResultSet rs=recuperar.cargaMail(TIPO);
     * //Obteniendo la informacion de las columnas que estan siendo consultadas
     * ResultSetMetaData rsMd = rs.getMetaData(); //La cantidad de columnas que
     * tiene la consulta int cantidadColumnas = rsMd.getColumnCount();
     * //Establecer como cabezeras el nombre de las colimnas for (int i = 1; i
     * <= cantidadColumnas; i++) { modelo.addColumn(rsMd.getColumnLabel(i)); }
     * //Creando las filas para el JTable while (rs.next()) { Object[] fila =
     * new Object[cantidadColumnas]; for (int i = 0; i < cantidadColumnas; i++)
     * { fila[i]=rs.getObject(i+1); } modelo.addRow(fila); }
     *
     * }
     * catch (Exception ex) { JOptionPane.showMessageDialog(NuevoMensaje, "Error
     * en Acceso a la Base de Datos"); } }
     */

    private void cmdEnviarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdEnviarActionPerformed


        int bandera = 0;
        if (txtDestinatario.getText().equals("") /*
                 * && txtAsunto.getText().equals("") &&
                 * txtAreaMensaje.getText().equals("")
                 */) {
            bandera++;
            JOptionPane.showMessageDialog(NuevoMensaje, "Por favor ingrese el Destinatario del mail");
        }
        if (bandera <= 0 && txtAsunto.getText().equals("")) {
            bandera++;
            JOptionPane.showMessageDialog(NuevoMensaje, "Por favor ingrese el asunto del mail");
        }

        if (bandera <= 0 && txtMensaje.getText().equals("")) {
            bandera++;
            JOptionPane.showMessageDialog(NuevoMensaje, "Por favor ingrese el cuerpo del mail");
        }

        if (bandera == 0) {
            //try {
            if (borrador == true) {
                mail = new MailEnviado((int) tablaBorradores.getValueAt(tablaBorradores.getSelectedRow(), 0), txtDestinatario.getText(), txtAsunto.getText(), txtMensaje.getText(), fecha);
                ConexionMails borrar = new ConexionMails();
                try {
                    borrar.enviarBorrador((MailEnviado) mail);
                    JOptionPane.showMessageDialog(NuevoMensaje, "Mensaje Enviado Exitosamente");
                    ListarEnviados();
                    ListarBorradores();
                    this.mostrarValoresMensajes();
                    NuevoMensaje.dispose();
                    borrador = false;
                    this.mostrarValoresMensajes();
                } catch (SQLException ex) {
                    Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
                }
            } else {
                mail = new MailEnviado(txtDestinatario.getText(), txtAsunto.getText(), txtMensaje.getText(), fecha);
                ConexionMails grabar = new ConexionMails();
                try {
                    grabar.mailsEnviados((MailEnviado) mail);
                    JOptionPane.showMessageDialog(NuevoMensaje, "Mensaje Enviado Exitosamente");
                    ListarEnviados();
                    NuevoMensaje.dispose();
                    this.mostrarValoresMensajes();
                } catch (SQLException ex) {
                    Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
                }
            }


        }
    }//GEN-LAST:event_cmdEnviarActionPerformed

       public void ListarEtiquetados() throws SQLException {
        ConexionMails conectar = new ConexionMails();             
        MailRecibido email;

        etiquetados = new ArrayList();

        try {
            etiquetados = conectar.listarEtiquetados();
            DefaultTableModel temp = (DefaultTableModel) tablaEtiquetados.getModel();
            for (int i = tablaEtiquetados.getRowCount() - 1; i >= 0; i--) {
              temp.removeRow(i); } 
            for (int i = 0; i < etiquetados.size(); i++)
              { 
              email = (MailRecibido)etiquetados.get(i); 
              Object nuevo[] = {new Boolean(false),email.getId_mail(), email.getRemitente(),email.getAsunto(),email.getFecha(), email.getEtiqueta()}; //esto es  por las tres columnas aunque puede varia
              temp.addRow(nuevo); 
              }
            tablaEtiquetados.setModel(temp);
        } catch (SQLException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    private void ListarEnviados() {
        ConexionMails conectar = new ConexionMails();
        MailEnviado email;
        enviados = new ArrayList();
        try {
            enviados = conectar.listarEnviados();
            DefaultTableModel temp = (DefaultTableModel) tablaEnviados.getModel();
            for (int i = tablaEnviados.getRowCount() - 1; i >= 0; i--) {
                temp.removeRow(i);
            }
            for (int i = 0; i < enviados.size(); i++) {
             email = (MailEnviado) enviados.get(i);
             Object nuevo[] = {new Boolean(false), email.getId_mail(), email.getDestinatario(), email.getAsunto(), email.getCuerpo(), email.getFecha()}; //esto es por las tres columnas aunque puede variar
             temp.addRow(nuevo);
            }
            tablaEnviados.setModel(temp);
        } catch (SQLException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    private void ListarBorradores() {
        ConexionMails conectar = new ConexionMails();
        MailEnviado email;
        borradores = new ArrayList();
        try {
            borradores = conectar.listarGuardados();

            DefaultTableModel temp = (DefaultTableModel) tablaBorradores.getModel();
            for (int i = tablaBorradores.getRowCount() - 1; i >= 0; i--) {
                temp.removeRow(i);
            }
            for (int i = 0; i < borradores.size(); i++) {
                //Cliente otroCliente = new Cliente();
                email = (MailEnviado) borradores.get(i);
                Object nuevo[] = {email.getId_mail(), email.getDestinatario(), email.getAsunto(), email.getCuerpo(), email.getFecha()}; //esto es por las tres columnas aunque puede variar

                temp.addRow(nuevo);
            }
            tablaBorradores.setModel(temp);
        } catch (SQLException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    private void cmdSalirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSalirActionPerformed
        NuevoMensaje.dispose();

    }//GEN-LAST:event_cmdSalirActionPerformed

    private void cmdGuardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdGuardarActionPerformed
        borrador = false;
        int bandera = 0;
        if (txtDestinatario.getText().equals("") && txtAsunto.getText().equals("") && txtMensaje.getText().equals("")) {
            bandera++;
            JOptionPane.showMessageDialog(NuevoMensaje, "Por favor rellene al menos un campo");
        } else {
            mail = new MailEnviado(txtDestinatario.getText(), txtAsunto.getText(), txtMensaje.getText(), fecha);


            ConexionMails grabar = new ConexionMails();
            try {
                grabar.mailsGuardados((MailEnviado) mail);
                JOptionPane.showMessageDialog(NuevoMensaje, "Mensaje Guardado Exitosamente");
                ListarBorradores();
                this.mostrarValoresMensajes();
                NuevoMensaje.dispose();
            } catch (SQLException ex) {
                Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }//GEN-LAST:event_cmdGuardarActionPerformed

    private void cmdAplicarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdAplicarActionPerformed

        MailRecibido mail;
        for (int i = 0; i < seleccionados.size(); i++) {
            mail = (MailRecibido) seleccionados.get(i);
            try {
                aplicarEtiqueta(mail);
                
                Etiqueta.dispose();

            } catch (SQLException ex) {
                Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
     this.actualizarRecibidos();
        try {
            this.mostrarValoresMensajes();
        } catch (SQLException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }
    }//GEN-LAST:event_cmdAplicarActionPerformed

 

    
    
    public void aplicarEtiqueta(MailRecibido mail) throws SQLException {

        EtiquetaRoja eUrgente = new EtiquetaRoja();;
        EtiquetaVerde eImportante = new EtiquetaVerde();;
        EtiquetaAzul eFavoritos = new EtiquetaAzul();;


        if (this.chkUrgente.isSelected()) {
            eUrgente.setEtiqueta(mail);
            eUrgente.etiquetarMail();

        }
        if (this.chkImportante.isSelected()) {
            eImportante.setEtiqueta(mail);
            eImportante.etiquetarMail();

        }
        if (this.chkFavoritos.isSelected()) {
            eFavoritos.setEtiqueta(mail);
            eFavoritos.etiquetarMail();

        }

    }

    private void cmdCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdCancelarActionPerformed
        Etiqueta.dispose();
    }//GEN-LAST:event_cmdCancelarActionPerformed

    /*
     * public void GuardarDatos() { //Texto guardar = new Texto(); /*&&
     * Path.equalsIgnoreCase(null) //if (Path == null && guardar.getFilename()==
     * null ) // { try {
     *
     *
     * //this.setTitle(name); if (name.equalsIgnoreCase("")) {
     *
     * }
     * else { //this.setTitle(name); //name=name+ ".txt";
     * guardar.Guardar(txtArea.getText(), name);
     *
     * //Path=name; } } catch (FileNotFoundException ex) {
     * Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
     * }
     *
     *
     * }
     */
    public String nombreGuardarArchivo() {
        int retorn = fileSave.showSaveDialog(this);
        if (retorn == JFileChooser.APPROVE_OPTION) {
            return fileSave.getSelectedFile().toString();
        } else {
            return "";
        }
    }

    private void txtfiltroActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txtfiltroActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_txtfiltroActionPerformed

    private void EliminarButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_EliminarButtonActionPerformed
     int op=panelMensajes.getSelectedIndex();
     if(op==0)
         MoveraEliminados(tablaRecibidos,recibidos);
     else if(op==5)    
         MoveraEliminados(tablaResultados,resultados);
     
  
    }//GEN-LAST:event_EliminarButtonActionPerformed

    public void MoveraEliminados(JTable mitabla,List milista){
       if (mitabla.getSelectedRow()==-1){
       JOptionPane.showMessageDialog(null, "Debe seleccionar al menos un mail");
       }
       else{ 
        seleccionados=new ArrayList();
        for (int i = 0; i < milista.size(); i++) {
            if (mitabla.getValueAt(i, 0) == true) {
                seleccionados.add((MailRecibido) milista.get(i));
            }
        }
      
        Iterator it = seleccionados.iterator();
         while(it.hasNext()){
         mail = (MailRecibido)it.next();
         ConexionMails borrar = new ConexionMails();
            try {
                borrar.mailsEliminados((MailRecibido) mail);
                //JOptionPane.showMessageDialog(NuevoMensaje, "Mensaje Eliminado Exitosamente");
                ListarEliminados();
                
            } catch (SQLException ex) {
                Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
            }
         
         }
      actualizarRecibidos();
      if (panelMensajes.getSelectedIndex()==5)
      {
      btnBuscarMailsActionPerformed(null);
      }
            try {
                this.mostrarValoresMensajes();
            } catch (SQLException ex) {
                Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
            }
    }
    }    
   
   private void ListarSpam() {
        ConexionMails conectar = new ConexionMails();
        MailRecibido email;
        nodeseados = new ArrayList();
        try {
            nodeseados = conectar.listarNodeseados();

            DefaultTableModel temp = (DefaultTableModel) tablaNodeseados.getModel();
            for (int i = tablaNodeseados.getRowCount() - 1; i >= 0; i--) {
                temp.removeRow(i);
            }
            for (int i = 0; i < nodeseados.size(); i++) {
                email = (MailRecibido) nodeseados.get(i);
                Object nuevo[] = {new Boolean(false),email.getId_mail(), email.getRemitente(),email.getAsunto(), email.getCuerpo(), email.getFecha()}; //esto es por las tres columnas aunque puede variar
                temp.addRow(nuevo);
            }
            tablaNodeseados.setModel(temp);
        } catch (SQLException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }

    }
    
      private void ListarEliminados() {
        ConexionMails conectar = new ConexionMails();
        MailRecibido email;
        eliminados = new ArrayList();
        try {
            eliminados = conectar.listarEliminados();

            DefaultTableModel temp = (DefaultTableModel) tablaEliminados.getModel();
            for (int i = tablaEliminados.getRowCount() - 1; i >= 0; i--) {
                temp.removeRow(i);
            }
            for (int i = 0; i < eliminados.size(); i++) {
                email = (MailRecibido) eliminados.get(i);
                Object nuevo[] = {new Boolean(false),email.getId_mail(), email.getRemitente(),email.getAsunto(), email.getCuerpo(), email.getFecha()}; //esto es por las tres columnas aunque puede variar

                temp.addRow(nuevo);
            }
            tablaEliminados.setModel(temp);
        } catch (SQLException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }

    }
    
    
    
    private void MoverButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MoverButtonActionPerformed
        
        ArrayList <Carpeta> cargadas = new ArrayList<Carpeta>();
        if (panelMensajes.getSelectedIndex()==0)
        {
        
                
      //  OpMoverACarpeta mover = new OpMoverACarpeta();
        
        seleccionados=new ArrayList();
        for (int i = 0; i < recibidos.size(); i++) {
            if (tablaRecibidos.getValueAt(i, 0) == true) {
                seleccionados.add((MailRecibido) recibidos.get(i));
            }
        }
        //Carpeta micarpeta;
        
        
        }
        else if (panelMensajes.getSelectedIndex()==5)
        {
            //ArrayList <Carpeta> cargadas = new ArrayList<Carpeta>();
            seleccionados=new ArrayList();
            for (int i = 0; i < resultados.size(); i++) 
            {
                if (tablaResultados.getValueAt(i, 0) == true) 
                {
                seleccionados.add((MailRecibido) resultados.get(i));
                }
            }
        
        }
        
        ConexionMails cargar = new ConexionMails();
        try 
        {
            cargadas=cargar.cargarCarpetasMover();
            for (int i=0; i < cargadas.size();i++)
            {
                this.cmbcarpetas.addItem(cargadas.get(i).getNombre());
                System.out.println(cargadas.get(i).getNombre());
            }
        } 
        catch (SQLException ex)
        {
            JOptionPane.showMessageDialog(this, "No se pudo encontrar carpetas");
           
        }
        
        moverA.setSize(400, 200);
        moverA.setLocationRelativeTo(this);
        moverA.setModal(true);
        moverA.setVisible(true);
        try {
            this.mostrarValoresMensajes();
            
            //SUBMENU PARA ESCOGER LA CARPETA, MENOS LA DE INBOX
            // mover.ejecutar(seleccionados,micarpeta);
        } catch (SQLException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }
    }//GEN-LAST:event_MoverButtonActionPerformed

    private void AppEtiquetaButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_AppEtiquetaButtonActionPerformed
        OpAplicarEtiqueta etiquetar = new OpAplicarEtiqueta();
        seleccionados=new ArrayList();
        if (panelMensajes.getSelectedIndex()==0)
        {
        for (int i = 0; i < recibidos.size(); i++) {
            if (tablaRecibidos.getValueAt(i, 0) == true) {
                seleccionados.add((MailRecibido) recibidos.get(i));
            }
        }
        }
        if (panelMensajes.getSelectedIndex()==5)
        {
        for (int i = 0; i < resultados.size(); i++) {
            if (tablaResultados.getValueAt(i, 0) == true) {
                seleccionados.add((MailRecibido) resultados.get(i));
            }
        }
        } 
        Etiqueta.setSize(450, 350);
        Etiqueta.setLocationRelativeTo(this);
        Etiqueta.setModal(true);
        Etiqueta.setVisible(true);

       // etiquetar.ejecutar(seleccionados);
        try {
            this.mostrarValoresMensajes();
        } catch (SQLException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }

    }//GEN-LAST:event_AppEtiquetaButtonActionPerformed

    private void btnBuscarMailsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnBuscarMailsActionPerformed

        String fil = comboFiltros.getSelectedItem().toString();
        MailRecibido email = new MailRecibido();
        resultados = new ArrayList();
        int band = 0; int conf;
        String[] palabra= txtfiltro.getText().split(" ");
        DefaultTableModel temp = (DefaultTableModel) tablaResultados.getModel();
        switch (fil) {

            case "Asunto":
                band = 0;
                 for (int i = tablaResultados.getRowCount() - 1; i >= 0; i--) {
                    temp.removeRow(i);
                  }
                 
                for (int i = 0; i < recibidos.size(); i++) {//for de mails
                   email = (MailRecibido) recibidos.get(i);
                   String[] fraseDB = email.getAsunto().split(" ");
	           conf=0;
	            for (int x=0; x<fraseDB.length; x++){//for para buscar en toda la longitud de frase existente
                      for(int j=0;j<palabra.length;j++){// for para buscar en toda longitud de la palabra o frase a buscar
                        if (palabra[j].equalsIgnoreCase(fraseDB[x])){
                        conf++;
		        }
	              }
                    }
                  if (conf==(palabra.length)){
                        Object nuevo[] = {new Boolean(false), email.getId_mail(), email.getRemitente(), email.getAsunto(), email.getCuerpo(), email.getFecha()}; //esto es por las tres columnas aunque puede variar
                        resultados.add(email);
                        temp.addRow(nuevo);
                        band = 1;
                        this.panelMensajes.setSelectedIndex(5);
	           }
                }
                
                if (band == 0) {
                   JOptionPane.showMessageDialog(null, "No hay resultados en la bandeja de entrada");
                }
                tablaResultados.setModel(temp);
                break;

            case "Remitente":
                band = 0;
                for (int i = tablaResultados.getRowCount() - 1; i >= 0; i--) {
                    temp.removeRow(i);
                }
                
                 for (int i = 0; i < recibidos.size(); i++) {//for de mails
                   email = (MailRecibido) recibidos.get(i);
                   String[] fraseDB = email.getRemitente().split(" ");
	           conf=0;
	            for (int x=0; x<fraseDB.length; x++){//for para buscar en toda la longitud de frase existente
                      for(int j=0;j<palabra.length;j++){// for para buscar en toda longitud de la palabra o frase a buscar
                        if (palabra[j].equalsIgnoreCase(fraseDB[x])){
                        conf++;
		        }
	              }
                    }
                  if (conf==(palabra.length)){
                        Object nuevo[] = {new Boolean(false), email.getId_mail(), email.getRemitente(), email.getAsunto(), email.getCuerpo(), email.getFecha()}; //esto es por las tres columnas aunque puede variar
                        resultados.add(email);
                        temp.addRow(nuevo);
                        band = 1;
                        this.panelMensajes.setSelectedIndex(5);
	           }
                }
                   
                if (band == 0) {
                   JOptionPane.showMessageDialog(null, "No hay resultados en la bandeja de entrada");
                }
                tablaResultados.setModel(temp);
                break;


            case "Cuerpo":
                band = 0;
                for (int i = tablaResultados.getRowCount() - 1; i >= 0; i--) {
                    temp.removeRow(i);
                }
                for (int i = 0; i < recibidos.size(); i++) {//for de mails
                   email = (MailRecibido) recibidos.get(i);
                   String[] fraseDB = email.getCuerpo().split(" ");
	           conf=0;
	            for (int x=0; x<fraseDB.length; x++){//for para buscar en toda la longitud de frase existente
                      for(int j=0;j<palabra.length;j++){// for para buscar en toda longitud de la palabra o frase a buscar
                        if (palabra[j].equalsIgnoreCase(fraseDB[x])){
                        conf++;
		        }
	              }
                    }
                  if (conf==(palabra.length)){
                        Object nuevo[] = {new Boolean(false), email.getId_mail(), email.getRemitente(), email.getAsunto(), email.getCuerpo(), email.getFecha()}; //esto es por las tres columnas aunque puede variar
                        resultados.add(email);
                        temp.addRow(nuevo);
                        band = 1;
                        this.panelMensajes.setSelectedIndex(5);
	           }
                }
                    
                if (band == 0) {
                    JOptionPane.showMessageDialog(null, "No hay resultados en la bandeja de entrada");
                }
                tablaResultados.setModel(temp);
                break;
            default:    JOptionPane.showMessageDialog(null, "Seleccione un filtro");
                break;
        }


        // TODO add your handling code here:
    }//GEN-LAST:event_btnBuscarMailsActionPerformed
   
    
    private void RehacerelimButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_RehacerelimButtonActionPerformed
    if (tablaEliminados.getSelectedRow()==-1){
       JOptionPane.showMessageDialog(null, "Debe seleccionar al menos un mail");
       }
       else{ 
        seleccionados=new ArrayList();
        for (int i = 0; i < eliminados.size(); i++) {
            if (tablaEliminados.getValueAt(i, 0) == true) {
                seleccionados.add((MailRecibido) eliminados.get(i));
                
            }
        }
      
        Iterator it = seleccionados.iterator();
         while(it.hasNext()){
         mail = (MailRecibido)it.next();
         ConexionMails mover = new ConexionMails();
            try {
                mover.mailsDevueltos((MailRecibido) mail);
                //JOptionPane.showMessageDialog(NuevoMensaje, "Mensaje Devuelto a Bandeja de Entrada, Exitosamente");
                ListarEliminados();
            } catch (SQLException ex) {
                Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
            }
         }
      actualizarRecibidos(); 
            try {
                this.mostrarValoresMensajes();
            } catch (SQLException ex) {
                Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }//GEN-LAST:event_RehacerelimButtonActionPerformed


    private void DeshacerEtiqButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_DeshacerEtiqButtonActionPerformed
   if (tablaEtiquetados.getSelectedRow()==-1){
       JOptionPane.showMessageDialog(null, "Debe seleccionar al menos un mail");
       }
       else{ 
        for (int i = 0; i < etiquetados.size(); i++) {
            if (tablaEtiquetados.getValueAt(i, 0) == true) {
                seleccionados.add((MailRecibido) etiquetados.get(i));
            }
        }
        Iterator it = seleccionados.iterator();
         while(it.hasNext()){
         mail = (MailRecibido)it.next();
         ConexionMails desetiqueta = new ConexionMails();
            try {
                desetiqueta.mailsDeshacerEtiqueta((MailRecibido) mail);
                JOptionPane.showMessageDialog(NuevoMensaje, "Se ha removido la etiqueta del Mensaje Exitosamente");
            } catch (SQLException ex) {
                Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
            }
         }
      actualizarRecibidos(); 
        }        
        
        // TODO add your handling code here:
    }//GEN-LAST:event_DeshacerEtiqButtonActionPerformed

    private void comboFiltrosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboFiltrosActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_comboFiltrosActionPerformed


    private void Tree1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_Tree1MouseClicked
       DefaultMutableTreeNode parentNode = new DefaultMutableTreeNode();
        TreePath parentPath = Tree1.getSelectionPath();
        Carpeta aux=new Carpeta();
        if (parentPath == null) 
        {
        } else 
        {
            parentNode = (DefaultMutableTreeNode) (parentPath.getLastPathComponent());
        }
        //modelo.insertNodeInto(child, parentNode, parentNode.getChildCount());
       String padre = parentNode.toString();

       if (padre.equalsIgnoreCase("BANDEJA DE ENTRADA"))
       {
           
           System.out.println("ENTRA");
           panelMensajes.setSelectedIndex(0);
           
       }
       if (padre.equalsIgnoreCase("BANDEJA DE SALIDA"))
       {
            System.out.println("SALE");
           panelMensajes.setSelectedIndex(1);
       }
       if (padre.equalsIgnoreCase("ELIMINADOS"))
       {
           
           
           panelMensajes.setSelectedIndex(4);
           
       }
       if (padre.equalsIgnoreCase("BORRADORES"))
       {
           
           panelMensajes.setSelectedIndex(2);
       }
       if (!padre.equalsIgnoreCase("BANDEJA DE ENTRADA") && !padre.equalsIgnoreCase("BANDEJA DE SALIDA") && !padre.equalsIgnoreCase("ELIMINADOS") && !padre.equalsIgnoreCase("BORRADORES") )
       {
           panelMensajes.setSelectedIndex(6); 
           this.mostrarMailsCarpeta();
       }
       
    }//GEN-LAST:event_Tree1MouseClicked

    private void cmdAgregarCarpetaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdAgregarCarpetaActionPerformed
        
        String cade = JOptionPane.showInputDialog(this, "Ingrese el nombre de la carpeta:");
        DefaultMutableTreeNode parentNode = null;
        DefaultMutableTreeNode child = new DefaultMutableTreeNode(cade);
        TreePath parentPath = Tree1.getSelectionPath();
        ConexionMails conexion= new ConexionMails();


        if (parentPath == null) {
        } else {
            parentNode = (DefaultMutableTreeNode) (parentPath.getLastPathComponent());
        }
        String padre = parentNode.toString();
        try 
        {
                    Carpeta c=carpetas.buscarCarpeta(padre);
                if (!conexion.comprobarMailsCarpeta(c.getId_caperta())){
                    
                    modelo.insertNodeInto(child, parentNode, parentNode.getChildCount());
                    
                    agregarCarpeta(c.getId_caperta(), cade);
                }
                else
                {
                    JOptionPane.showMessageDialog(this, "Esta carpeta contiene mails. No es posible agregar carpetas.");
                }
            
        } catch (SQLException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        
    }//GEN-LAST:event_cmdAgregarCarpetaActionPerformed

    private void cmdEliminarCarpetaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdEliminarCarpetaActionPerformed
       
        DefaultMutableTreeNode parentNode = null;
        ConexionMails conexion=new ConexionMails();
        TreePath parentPath = Tree1.getSelectionPath();

        if (parentPath == null) {
        } else {
            parentNode = (DefaultMutableTreeNode) (parentPath.getLastPathComponent());
        }
        
        
        String nombreCarpeta = parentNode.toString();
        if (nombreCarpeta.equalsIgnoreCase("CARPETAS") || nombreCarpeta.equalsIgnoreCase("BANDEJA DE ENTRADA") || nombreCarpeta.equalsIgnoreCase("BANDEJA DE SALIDA") || nombreCarpeta.equalsIgnoreCase("BORRADORES") || nombreCarpeta.equalsIgnoreCase("ELIMINADOS") )
        {

            JOptionPane.showMessageDialog(this, "No se puede eliminar la carpeta"+nombreCarpeta);
        }
        else
        {
            int id_carpeta=carpetas.buscarCarpeta(nombreCarpeta).getId_caperta(); 
            try {
                if(!conexion.comprobarMailsCarpeta(id_carpeta))
                {
                    conexion.eliminarCarpeta(id_carpeta);
                    modelo.removeNodeFromParent(parentNode);
                }
                else
                {
                    JOptionPane.showMessageDialog(this, "La carpeta "+nombreCarpeta+" ya contiene mails. Elija o cree otra carpeta.");
                }
            } catch (SQLException ex) {
                Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        
    }//GEN-LAST:event_cmdEliminarCarpetaActionPerformed

    private void cmdSalirAppActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSalirAppActionPerformed
        try 
        {
            this.GuardarArbol();
            
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }
        this.dispose();
    }//GEN-LAST:event_cmdSalirAppActionPerformed

    private void cmdCancelarMActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdCancelarMActionPerformed
        this.cmbcarpetas.removeAllItems();
        this.cmbcarpetas.addItem("Elija una Carpeta");
        this.moverA.dispose();
    }//GEN-LAST:event_cmdCancelarMActionPerformed

    private void cmdMoverMailsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMoverMailsActionPerformed
        

        
    }//GEN-LAST:event_cmdMoverMailsActionPerformed

    private void cmdMoverMailActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMoverMailActionPerformed
        String nombreCarpeta= (String) cmbcarpetas.getSelectedItem();
        Carpeta carpeta = new Carpeta();
        ListaCarpetas cargar = new ListaCarpetas();
        carpeta=cargar.buscarCarpeta(nombreCarpeta);
        ConexionMails moverMail = new ConexionMails();
        try 
            {
        for (int i=0;i<seleccionados.size();i++)
        {
            
                moverMail.moverMail(carpeta.getId_caperta(),seleccionados.get(i).getId_mail());
                  
        }
        cargar.AgregarMails(carpeta.getId_caperta(), seleccionados);

        this.actualizarRecibidos();
        if (panelMensajes.getSelectedIndex()==5 )
        {
        this.btnBuscarMailsActionPerformed(evt);
        }
            this.mostrarValoresMensajes();

        
        } 
            catch (SQLException ex) 
            {
                
                Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
            }
        this.cmbcarpetas.removeAllItems();
        this.cmbcarpetas.addItem("Elija una Carpeta");
        moverA.dispose();
    }//GEN-LAST:event_cmdMoverMailActionPerformed

    private void cmdCancelarMoverActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
        
    }//GEN-LAST:event_jButton2ActionPerformed

    private void cmdExportarCActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdExportarCActionPerformed
     
        ArrayList <Carpeta> cargadas = new ArrayList<Carpeta>();
        
        ConexionMails cargar = new ConexionMails();
        try 
        {
            cargadas=cargar.cargarCarpetasMover();
            for (int i=0; i < cargadas.size();i++)
            {
                this.cmbcarpetasExportar.addItem(cargadas.get(i).getNombre());
                System.out.println(cargadas.get(i).getNombre());
            }
        } 
        catch (SQLException ex)
        {
            JOptionPane.showMessageDialog(this, "No se pudo encontrar carpetas");
           
        }
        
        
        this.ExportarCarpetas.setSize(400, 200);
        ExportarCarpetas.setLocationRelativeTo(this);
        ExportarCarpetas.setModal(true);
        ExportarCarpetas.setVisible(true);
        
    }//GEN-LAST:event_cmdExportarCActionPerformed

    private void moverRecibidosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_moverRecibidosActionPerformed
        seleccionados=new ArrayList();
        ConexionMails conexion=new ConexionMails();
        ArrayList numerosSeleccionados = new ArrayList();
        for (int i = 0; i < tablaMailCarpetas.getRowCount(); i++) {
            if (tablaMailCarpetas.getValueAt(i, 0) == true) {
                try {
                    conexion.MoveraEntrada((int)tablaMailCarpetas.getValueAt(i, 1));
                    numerosSeleccionados.add(tablaMailCarpetas.getValueAt(i, 1));
                } catch (SQLException ex) {
                    Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            
        }
        actualizarRecibidos();
        //for (int i=0;i<tablaMailCarpetas.getRowCount();i++)
        
       DefaultTableModel temp = (DefaultTableModel) tablaMailCarpetas.getModel();
       for(int j=0;j<numerosSeleccionados.size();j++){
                    for (int i = 0; i < temp.getRowCount(); i++) {
                        if (tablaMailCarpetas.getValueAt(i, 1).equals(numerosSeleccionados.get(j)) ) 
                        {
                            temp.removeRow(i);
                        }
                    }
                }
                tablaMailCarpetas.setModel(temp);
        try {
            this.mostrarValoresMensajes();
        } catch (SQLException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }
    }//GEN-LAST:event_moverRecibidosActionPerformed

    private void EliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_EliminarActionPerformed
        
         try {
            MoverCarpetaEliminado();
            this.ListarEliminados();
        } catch (SQLException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }
    
    }//GEN-LAST:event_EliminarActionPerformed

    private void cmdExportarCarpetaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdExportarCarpetaActionPerformed
      
        String nombre = (String) this.cmbcarpetasExportar.getSelectedItem();
        Carpeta carpeta = this.carpetas.buscarCarpeta(nombre);
        
        EstrategiaExportacion exportar = new ExportarCarpetaRAR();
        exportar.Exportar(carpeta, nombre);
        this.cmbcarpetasExportar.removeAllItems();
        this.cmbcarpetasExportar.addItem("Elija una carpeta...");
        
    }//GEN-LAST:event_cmdExportarCarpetaActionPerformed

    private void cmdCancelarM1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdCancelarM1ActionPerformed
        this.cmbcarpetasExportar.removeAllItems();
        this.cmbcarpetasExportar.addItem("Elija una carpeta...");
        this.ExportarCarpetas.dispose();
    }//GEN-LAST:event_cmdCancelarM1ActionPerformed

    private void cmdGuardarConfiguracionesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdGuardarConfiguracionesActionPerformed
       
        this.cmdActualizarActionPerformed(evt);
        Configuraciones.dispose();
        ///aqui falta programar
        
        
        
    }//GEN-LAST:event_cmdGuardarConfiguracionesActionPerformed

    private void cmdConfiguracionesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdConfiguracionesActionPerformed
        Configuraciones.setSize(500, 250);
            Configuraciones.setLocationRelativeTo(this);
            Configuraciones.setModal(true);
            Configuraciones.setVisible(true);
    }//GEN-LAST:event_cmdConfiguracionesActionPerformed

    private void tablaEliminadosMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tablaEliminadosMouseClicked
        // TODO add your handling code here:
    }//GEN-LAST:event_tablaEliminadosMouseClicked

    private void tablaBorradoresMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tablaBorradoresMouseClicked

        int numero = (int) tablaBorradores.getValueAt(tablaBorradores.getSelectedRow(), 0);

        MailEnviado email = new MailEnviado();
        for (int i = 0; i < borradores.size(); i++) {
            //Cliente otroCliente = new Cliente();
            email = (MailEnviado) borradores.get(i);
            //Object nuevo[] = {email.getId_mail(),email.getDestinatario(), email.getAsunto(),email.getCuerpo(),email.getFecha()}; //esto es por las tres columnas aunque puede variar
            if (email.getId_mail() == numero) {
                txtDestinatario.setText(email.getDestinatario());
                txtAsunto.setText(email.getAsunto());
                txtMensaje.setText(email.getCuerpo());
                borrador = true;
            }
            //temp.addRow(nuevo);
        }
        NuevoMensaje.setSize(710, 500);
        NuevoMensaje.setLocationRelativeTo(this);
        NuevoMensaje.setModal(true);
        NuevoMensaje.setVisible(true);
    }//GEN-LAST:event_tablaBorradoresMouseClicked

    private void cmdExportarEnviadosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdExportarEnviadosActionPerformed

        ExportarMailEnviado mail = new ExportarMailEnviado();
        for (int i = 0; i < enviados.size(); i++) {
            if (tablaEnviados.getValueAt(i, 0) == true) {
                //seleccionados.add((MailRecibido)recibidos.get(i));
                String nombre = nombreGuardarArchivo();

                //String nombre=JOptionPane.showInputDialog(this,"Ingrese el nombre para el mail: ");
                mail.Exportar(enviados.get(i), nombre);

            }

        }
    }//GEN-LAST:event_cmdExportarEnviadosActionPerformed

    private void cmdActualizarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdActualizarActionPerformed

        actualizarRecibidos();
    }//GEN-LAST:event_cmdActualizarActionPerformed

    private void cmdLeerMailActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdLeerMailActionPerformed

        int numero = (int) tablaRecibidos.getValueAt(tablaRecibidos.getSelectedRow(), 1);
        ConexionMails leido = new ConexionMails();
        MailRecibido email = new MailRecibido();
        for (int i = 0; i < recibidos.size(); i++) {
            //Cliente otroCliente = new Cliente();
            email = (MailRecibido) recibidos.get(i);
            //Object nuevo[] = {email.getId_mail(),email.getDestinatario(), email.getAsunto(),email.getCuerpo(),email.getFecha()}; //esto es por las tres columnas aunque puede variar
            if (email.getId_mail() == numero) {
                txtDestinatario.setText(email.getRemitente());
                txtAsunto.setText(email.getAsunto());
                txtMensaje.setText(email.getCuerpo());
                try {
                    leido.marcarLeido(email.getId_mail());
                    //JOptionPane.showMessageDialog(this, "se cambio de estado");

                    actualizarRecibidos();
                    //borrador = true;
                } catch (SQLException ex) {
                    Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            //temp.addRow(nuevo);
        }
        this.cmdEnviar.setEnabled(false);
        this.cmdGuardar.setEnabled(false);
        this.cmdBorrar.setEnabled(false);
        this.txtAsunto.enable(false);
        this.txtDestinatario.enable(false);
        this.txtMensaje.enable(false);

        NuevoMensaje.setSize(710, 500);
        NuevoMensaje.setLocationRelativeTo(this);
        NuevoMensaje.setModal(true);
        NuevoMensaje.setVisible(true);
    }//GEN-LAST:event_cmdLeerMailActionPerformed

    private void cmdExportarRecibidosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdExportarRecibidosActionPerformed

        ExportarMailRecibido mail = new ExportarMailRecibido();
        for (int i = 0; i < recibidos.size(); i++) {
            if (tablaRecibidos.getValueAt(i, 0) == true) {
                //seleccionados.add((MailRecibido)recibidos.get(i));
                String nombre = nombreGuardarArchivo();

                //String nombre=JOptionPane.showInputDialog(this,"Ingrese el nombre para el mail: ");
                mail.Exportar(recibidos.get(i), nombre);

            }
        }
    }//GEN-LAST:event_cmdExportarRecibidosActionPerformed

    private void cdmEtiquetarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cdmEtiquetarActionPerformed
        seleccionados = new ArrayList();
        for (int i = 0; i < recibidos.size(); i++) {
            if (tablaRecibidos.getValueAt(i, 0) == true) {
                seleccionados.add((MailRecibido) recibidos.get(i));
            }

        }

        Etiqueta.setSize(450, 350);
        Etiqueta.setLocationRelativeTo(this);
        Etiqueta.setModal(true);
        Etiqueta.setVisible(true);
    }//GEN-LAST:event_cdmEtiquetarActionPerformed

    private void tablaRecibidosMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tablaRecibidosMouseClicked

   }//GEN-LAST:event_tablaRecibidosMouseClicked

    private void tablaRecibidosMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tablaRecibidosMousePressed

   }//GEN-LAST:event_tablaRecibidosMousePressed

    private void NodeseadoButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_NodeseadoButtonActionPerformed
             if(tablaRecibidos.getSelectedRow()==-1){
       JOptionPane.showMessageDialog(null, "Debe seleccionar al menos un mail");
       }
       else{ 
        seleccionados=new ArrayList();
        for (int i = 0; i < recibidos.size(); i++) {
            if (tablaRecibidos.getValueAt(i, 0) == true) {
                seleccionados.add((MailRecibido) recibidos.get(i));
            }
        }
        Iterator it = seleccionados.iterator();
         while(it.hasNext()){
         mail = (MailRecibido)it.next();
         ConexionMails nodeseo = new ConexionMails();
            try {
                nodeseo.mailsNodeseados((MailRecibido) mail);
                ListarSpam();  
            } catch (SQLException ex) {
                Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
            }
         
         }
      actualizarRecibidos();
      if (panelMensajes.getSelectedIndex()==5)
      {
    
      }
            try {
                this.mostrarValoresMensajes();
            } catch (SQLException ex) {
                Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
            }
    }
    }//GEN-LAST:event_NodeseadoButtonActionPerformed

    /*
     * public DefaultTreeModel cargarArbol() {
     *
     * DefaultMutableTreeNode padre = null; padre = new
     * DefaultMutableTreeNode("Carpetas"); modelo = new DefaultTreeModel(padre);
     *
     * DefaultMutableTreeNode recibidos = null; DefaultMutableTreeNode enviados
     * = null; DefaultMutableTreeNode borradores = null; DefaultMutableTreeNode
     * eliminados = null;
     *
     *
     *
     * recibidos = new DefaultMutableTreeNode("Recibidos");
     * modelo.insertNodeInto(recibidos,padre, 0);
     *
     *
     * enviados = new DefaultMutableTreeNode("Enviados");
     * modelo.insertNodeInto(enviados, padre, 1);
     *
     *
     * borradores = new DefaultMutableTreeNode("Borradores");
     * modelo.insertNodeInto(borradores, padre, 2);
     *
     * eliminados = new DefaultMutableTreeNode("Eliminados");
     * modelo.insertNodeInto(eliminados, padre, 3);
     *
     * CrearCarpetas();
     *
     * return modelo; }
     *
     * public void CrearCarpetas(){
     *
     * ListaCarpetas lista=null; System.out.println("INSERCION SOLO DE
     * CARPETAS\n"); Carpeta raiz = new Carpeta(1,"CARPETAS",0);
     * lista.agregarCarpeta(raiz); Carpeta padre1 = new Carpeta(2,"BANDEJA DE
     * ENTRADA",1); lista.agregarCarpeta(padre1); Carpeta padre2 = new
     * Carpeta(3,"BANDEJA DE SALIDA",1); lista.agregarCarpeta(padre2); Carpeta
     * padre3 = new Carpeta(4,"BORRADORES",1); lista.agregarCarpeta(padre3);
     * Carpeta padre4 = new Carpeta(5,"ELIMINADOS",1);
     * lista.agregarCarpeta(padre4);
     *
     * }
     *
     * public void agregarCarpeta(String padre, String nombre) { ListaCarpetas
     * lista=null; Carpeta c=lista.buscarCarpeta(padre); int
     * id=lista.getNumCarpetas(); Carpeta nueva=new
     * Carpeta(id,nombre,c.getId_caperta()); lista.agregarCarpeta(nueva);
     *
     * }
     *
     *
     * public void cargar() { //Tree.setModel(cargarArbol());
     * Tree.setModel(cargarArbol()); }
     */
    /**
     * @param args the command line arguments
     */
    
    
    public void cargarCarpetas() throws SQLException
    {
        
        carpetas.cargarCarpetas();
    }
    public void cargar() throws FileNotFoundException, IOException, ClassNotFoundException {
        //Tree.setModel(cargarArbol());
        Tree1.setModel(cargarArbol());
        
    }
    
    public void GuardarArbol() throws FileNotFoundException, IOException
    {
        DefaultTreeModel nuevo = (DefaultTreeModel) Tree1.getModel();
        ArchivoArbol archivoArbol = new ArchivoArbol();
        archivoArbol.Grabar(nuevo);
    }
    
    public DefaultTreeModel cargarArbol() throws FileNotFoundException, IOException, ClassNotFoundException {
        
        /*ListaCarpetas lista= new ListaCarpetas();
        ArrayList<Carpeta> listacarpetas=lista.getListaCarpetas();
        Carpeta unaCarpeta;
        DefaultMutableTreeNode nodo = null;
        unaCarpeta=listacarpetas.get(0);
        nodo = new DefaultMutableTreeNode(unaCarpeta.getNombre());
        modelo = new DefaultTreeModel(nodo);
        
        for (int i=1;i<listacarpetas.size();i++)
        {
            
            
                unaCarpeta=listacarpetas.get(i);
                int id_p=unaCarpeta.getId_padre();
                //System.out.print(id_p);
                Carpeta aux = new Carpeta();
                aux=lista.buscarCarpetaId(id_p);
                System.out.print(unaCarpeta.getNombre());
                System.out.print(aux.getNombre());
                if (unaCarpeta.getNombre().equals("BANDEJA DE ENTRADA"))
                {
                    unaCarpeta.setMails(recibidos);
                }
                if (unaCarpeta.getNombre().equals("BANDEJA DE SALIDA"))
                {
                    unaCarpeta.setMails(enviados);
                }
                DefaultMutableTreeNode nodo1 = new DefaultMutableTreeNode(unaCarpeta.getNombre());
                DefaultMutableTreeNode nodop = new DefaultMutableTreeNode(aux.getNombre());
                
                modelo.insertNodeInto(nodo1,nodo,i-1);
                

        
        }*/
        ArchivoArbol cargar = new ArchivoArbol();
        modelo=(DefaultTreeModel) cargar.Recuperar();
   
       return modelo;
       
   
    }
    

    
    public void agregarCarpeta(int padre, String nombre) throws SQLException
    {
        
        int id=carpetas.getNumCarpetas();
        Carpeta nueva=new Carpeta(id+1,nombre,padre);
            carpetas.agregarCarpeta(nueva);
            JOptionPane.showMessageDialog(this, "Carpeta Ingresada");

        
    }
    
    public void mostrarMailsCarpeta()
    {
                
        DefaultMutableTreeNode nodoC = null;
        TreePath parentPath = Tree1.getSelectionPath();


        if (parentPath == null) {
        } else {
            nodoC = (DefaultMutableTreeNode) (parentPath.getLastPathComponent());
            String nombreCarpeta = nodoC.toString();
            ListaCarpetas cargar = new ListaCarpetas();
            ArrayList mailsRecuperados = new ArrayList();
            Carpeta nueva = new Carpeta(); 
            nueva=cargar.buscarCarpeta(nombreCarpeta);
            mailsRecuperados=nueva.getMails();
            MailRecibido email = new MailRecibido();
            
            DefaultTableModel temp = (DefaultTableModel) tablaMailCarpetas.getModel();
            for (int i =  tablaMailCarpetas.getRowCount() - 1; i >= 0; i--) {
                temp.removeRow(i);
            }
            for (int i = 0; i < mailsRecuperados.size(); i++) {
                email = (MailRecibido) mailsRecuperados.get(i);
                Object nuevo[] = {new Boolean(false),email.getId_mail(), email.getRemitente(),email.getAsunto(), email.getCuerpo(), email.getFecha()}; //esto es por las tres columnas aunque puede variar

                temp.addRow(nuevo);
            }
            tablaMailCarpetas.setModel(temp);
            
            
        }
        
    }
    

    public void MoverCarpetaEliminado() throws SQLException{
        ConexionMails conexion=new ConexionMails();
        int id_mail;
        if (tablaMailCarpetas.getSelectedRow()==-1){
       JOptionPane.showMessageDialog(null, "Debe seleccionar al menos un mail");
       }
       else{ 
        ArrayList borrar=new ArrayList();
        ArrayList index=new ArrayList();
        ArrayList remitentes=new ArrayList();
        for (int i = 0; i < tablaMailCarpetas.getRowCount(); i++) {
            if (tablaMailCarpetas.getValueAt(i, 0) == true) {
                borrar.add((int) tablaMailCarpetas.getValueAt(i, 1));
                remitentes.add((String) tablaMailCarpetas.getValueAt(i, 2));
            }
        }
        
                        
                DefaultTableModel temp = (DefaultTableModel) tablaMailCarpetas.getModel();
                for(int i=0;i<borrar.size();i++)
                {
                    conexion.MoveraEntrada((int)borrar.get(i));
                    conexion.guardarEliminado((int)borrar.get(i),(String)remitentes.get(i));
                    //temp.removeRow((int)tablaMailCarpetas.getValueAt(i, i));
                    
                }
                for(int j=0;j<borrar.size();j++){
                    for (int i = 0; i < temp.getRowCount(); i++) {
                        if (tablaMailCarpetas.getValueAt(i, 1).equals(borrar.get(j)) ) 
                        {
                            temp.removeRow(i);
                        }
                    }
                }
                tablaMailCarpetas.setModel(temp);
                
                
        }
        ListarEliminados();
        this.mostrarValoresMensajes();
    
    }
    

    public void mostrarValoresMensajes() throws SQLException
    {
        ConexionMails numRecibido = new ConexionMails();
        numRecibidos=numRecibido.cargarNumRecibidos();
        this.panelMensajes.setTitleAt(0, "Recibidos ("+numRecibidos+")");
        this.panelMensajes.setTitleAt(1, "Enviados("+enviados.size()+")");
        this.panelMensajes.setTitleAt(2, "Borradores("+borradores.size()+")");
        this.panelMensajes.setTitleAt(4, "Eliminados("+eliminados.size()+")");
        this.panelMensajes.setTitleAt(3, "Etiquetados("+etiquetados.size()+")");
       // this.panelMensajes.setTitleAt(5, "Busqueda("+resultados.size()+")");
        //this.panelMensajes.setTitleAt(0, "Recibidos("+eliminados.size()+")");
    }

    
    public static void main(String args[]) {
        /*
         * Set the Nimbus look and feel
         */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /*
         * If Nimbus (introduced in Java SE 6) is not available, stay with the
         * default look and feel. For details see
         * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /*
         * Create and display the form
         */
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new Principal().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JMenuItem AppEtiquetaButton;
    private javax.swing.JMenuItem Borrar;
    private javax.swing.JDialog Configuraciones;
    private javax.swing.JDialog DefinirFiltros;
    private javax.swing.JMenuItem DeshacerEtiqButton;
    private javax.swing.JMenuItem Eliminar;
    private javax.swing.JMenuItem EliminarButton;
    private javax.swing.JDialog Etiqueta;
    private javax.swing.JDialog ExportarCarpetas;
    private javax.swing.JPopupMenu MenuCarpeta;
    private javax.swing.JMenuItem MoverButton;
    private javax.swing.JMenuItem NodeseadoButton;
    private javax.swing.JDialog NuevaCarpeta;
    private javax.swing.JMenuItem Nuevo;
    private javax.swing.JDialog NuevoMensaje;
    private javax.swing.JPanel PanelResultados;
    private javax.swing.JMenuItem RehacerelimButton;
    private javax.swing.JTree Tree1;
    private javax.swing.JButton btnBuscarMails;
    private javax.swing.JButton cdmEtiquetar;
    private javax.swing.JCheckBox chkFavoritos;
    private javax.swing.JCheckBox chkImportante;
    private javax.swing.JCheckBox chkUrgente;
    private javax.swing.JComboBox cmbServidores;
    private javax.swing.JComboBox cmbcarpetas;
    private javax.swing.JComboBox cmbcarpetasExportar;
    private javax.swing.JButton cmdActualizar;
    private javax.swing.JButton cmdAgregarCarpeta;
    private javax.swing.JButton cmdAplicar;
    private javax.swing.JButton cmdBorrar;
    private javax.swing.JButton cmdCancelar;
    private javax.swing.JButton cmdCancelarM;
    private javax.swing.JButton cmdCancelarM1;
    private javax.swing.JButton cmdConfiguraciones;
    private javax.swing.JButton cmdEliminarCarpeta;
    private javax.swing.JButton cmdEnviar;
    private javax.swing.JButton cmdExportarC;
    private javax.swing.JButton cmdExportarCarpeta;
    private javax.swing.JButton cmdExportarEnviados;
    private javax.swing.JButton cmdExportarRecibidos;
    private javax.swing.JButton cmdGuardar;
    private javax.swing.JButton cmdGuardarConfiguraciones;
    private javax.swing.JButton cmdLeerMail;
    private javax.swing.JButton cmdMoverMail;
    private javax.swing.JButton cmdSalir;
    private javax.swing.JButton cmdSalirApp;
    private javax.swing.JComboBox comboFiltros;
    private javax.swing.JFileChooser fileSave;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane10;
    private javax.swing.JScrollPane jScrollPane11;
    private javax.swing.JScrollPane jScrollPane12;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane4;
    private javax.swing.JScrollPane jScrollPane5;
    private javax.swing.JScrollPane jScrollPane6;
    private javax.swing.JScrollPane jScrollPane7;
    private javax.swing.JScrollPane jScrollPane8;
    private javax.swing.JScrollPane jScrollPane9;
    private javax.swing.JLabel lblFecha;
    private javax.swing.JLabel lblLogo1;
    private javax.swing.JList listaOpciones;
    private javax.swing.JPopupMenu menuAcciones;
    private javax.swing.JPopupMenu menuArchivos;
    private javax.swing.JPopupMenu menuDeshacerBorrar;
    private javax.swing.JPopupMenu menuDeshacerEtiqueta;
    private javax.swing.JDialog moverA;
    private javax.swing.JMenuItem moverRecibidos;
    private javax.swing.JPanel panelBorradores;
    private javax.swing.JPanel panelEliminados;
    private javax.swing.JPanel panelEnviados;
    private javax.swing.JPanel panelEscritura;
    private javax.swing.JPanel panelEtiquetados;
    private javax.swing.JPanel panelFiltros;
    private javax.swing.JTabbedPane panelMensajes;
    private javax.swing.JPanel panelRecibidos;
    private javax.swing.JTable tablaBorradores;
    private javax.swing.JTable tablaEliminados;
    private javax.swing.JTable tablaEnviados;
    private javax.swing.JTable tablaEtiquetados;
    private javax.swing.JTable tablaMailCarpetas;
    private javax.swing.JTable tablaNodeseados;
    private javax.swing.JTable tablaRecibidos;
    private javax.swing.JTable tablaResultados;
    private javax.swing.JTextField txtAsunto;
    private javax.swing.JTextField txtDestinatario;
    private javax.swing.JTextArea txtMensaje;
    private javax.swing.JTextField txtfiltro;
    // End of variables declaration//GEN-END:variables
}
